﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AccesoDatos.Manejador;
using AccesoDatos.Objetos;
using AccesoDatos;
using System.IO;
using System.Runtime.InteropServices;

namespace RMA.Pantallas
{
    public partial class frmDetalleTicket : Form
    {
        private string ComentarioTramite = "";
        private string CodProveedor = "";
        private bool Modificado = false;
        [DllImport("user32.dll")]
        static extern bool AnimateWindow(IntPtr hwnd, uint dwTime, uint dwFlags);

        public class WinApi
        {
            public static int GWL_EXSTYLE = -20;
            public static int WS_EX_LAYERED = 0x80000;
            public static int LWA_ALPHA = 0x2;
            [DllImport("user32")]
            public static extern int SetLayeredWindowAttributes(IntPtr hWnd, byte crey, byte alpha, int dwFlags);
            [DllImport("user32")]
            public static extern int GetLayeredWindowAttributes(IntPtr hWnd, byte crey, out byte alpha, int dwFlags);
            [DllImport("user32")]
            public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
            [DllImport("user32")]
            public static extern int GetWindowLong(IntPtr hWnd, int nIndex);
        }
        void mkwndtrans(IntPtr hWnd, int num)
        {
            int oldWinStyle = WinApi.GetWindowLong(hWnd, WinApi.GWL_EXSTYLE);
            WinApi.SetWindowLong(hWnd, WinApi.GWL_EXSTYLE,
            num < 255 ? oldWinStyle | WinApi.WS_EX_LAYERED :
            oldWinStyle & WinApi.WS_EX_LAYERED);
            WinApi.SetLayeredWindowAttributes(hWnd, 0, (byte)num, WinApi.LWA_ALPHA);
        }
        enum AnimateWindowFlags : uint
        {
            AW_HOR_POSITIVE = 0x00000007,
            AW_HOR_NEGATIVE = 0x00000002,
            AW_VER_POSITIVE = 0x00000004,
            AW_VER_NEGATIVE = 0x00000008,
            AW_CENTER = 0x00000010,
            AW_HIDE = 0x00010000,
            AW_ACTIVATE = 0x00020000,
            AW_SLIDE = 0x00040000,
            AW_BLEND = 0x00080000
        }
        List<string> lstFolios = new List<string>();
        public frmDetalleTicket()
        {
            InitializeComponent();
        }
        public frmDetalleTicket(List<string> _lstFolios, string _CodProveedor)
        {
            lstFolios = _lstFolios;
            CodProveedor = _CodProveedor;
            InitializeComponent();
        }
        private void frmDetalleTicket_Load(object sender, EventArgs e)
        {

            txtRmaProv.Focus();
            CargaDetallesTramite();
            CargaPaqueterias();
            
        }
        public void CargaDetallesTramite()
        {
            Manejador_Tramites objTramites = new Manejador_Tramites();
            DataTable dtDetalleTramite = new DataTable();
            try
            {
                string strQuery = objTramites.ConsultaDetalleTramites(lstFolios);

                dtDetalleTramite = objTramites.EjecutaQueryTramites(strQuery);
                dgvTramites.AutoGenerateColumns = false;
                dgvTramites.DataSource = dtDetalleTramite;
                foreach (DataGridViewColumn ca in dgvTramites.Columns)
                {
                    ca.AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
                }
            }
            catch (Exception ex)
            {

            }
        }
        

        private void btnCerrar_Click(object sender, EventArgs e)
        {
           this.Close();
           
            
            
        }

        private void frmDetalleTicket_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (Modificado)
            {
                e.Cancel = false;
            }
            else
            {
                if (MessageBox.Show("Desea cerrar? se perderan los cambios realizados", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    e.Cancel = false;
                }
                else
                {
                    e.Cancel = true;
                }
            }
            
        }

        private void btnAplicar_Click(object sender, EventArgs e)
        {
            //GUARDA CAMBIOS A TICKET
            if (txtNumeroGuia.Text != "" && cbTipo.Text != "" && txtDetalle.Text != "")
            {
                if (GuardaCambios())
                {
                    MessageBox.Show("Cambios Aplicados", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    Modificado = true;
                    this.Close();
                }
                else
                {
                    MessageBox.Show("Cambios no Aplicados", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                MessageBox.Show("Complete todos los datos con *", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            
            

        }

        public bool GuardaCambios()
        {
            bool Agrega = false;
            Manejador_Tramites objTramites = new Manejador_Tramites();
            clsParametrosTramites objParametros = new clsParametrosTramites();

            try
            {
                
                foreach (DataGridViewRow r in dgvTramites.Rows)
                {
                    objParametros = new clsParametrosTramites();
                    //MOVIMIENTOS
                    objParametros.Folio = r.Cells[0].Value.ToString();
                    objParametros.Fecha = DateTime.Now;
                    objParametros.Id_estatus = 11;
                    objParametros.Accion = "Tramitado";
                    objParametros.Id_usuario = frmPrincipal.IdUsr;
                    objParametros.Detalle = txtDetalle.Text;
                    objParametros.Referencia = r.Cells[8].Value.ToString();
                    objParametros.Oculto = 0;
                    //SEGUIMIENTO PROVEEDOR
                    objParametros.Cod_Proveedor = int.Parse(CodProveedor);
                    objParametros.Rma_Proveedor = txtRmaProv.Text;
                    objParametros.Guia_Envio = txtNumeroGuia.Text;
                    objParametros.Paqueteria = cbPaqueterias.Text;
                    objParametros.Fecha_Envio = dtFecha.Value;
                    objParametros.Comentarios = ComentarioTramite;
                    //DETALLE SEGUIMIENTO PROVEEDOR
                    objParametros.Orden_Servicio = r.Cells[0].Value.ToString();
                    Agrega = objTramites.GuardaTramites(objParametros);

                    
                }
                return Agrega;
            }
            catch (Exception ex)
            {
                //MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return Agrega;
            }

        }

        private void btnComentario_Click(object sender, EventArgs e)
        {
            frmComentarioTramites frmC = new frmComentarioTramites();
            AnimateWindow(frmC.Handle, 250, (uint)AnimateWindowFlags.AW_CENTER);
            frmC.ShowDialog();

            ComentarioTramite = frmC.Comentario;
            txtComentario.Text = ComentarioTramite;
        }

        public void CargaPaqueterias()
        {
            DataTable dtPaqueterias = null;
            Manejador_Tramites objPaq = new Manejador_Tramites();

            try
            {
                dtPaqueterias = objPaq.RegresaCatPaqueterias();
                cbPaqueterias.DataSource = dtPaqueterias;
                cbPaqueterias.DisplayMember = "nombre";
                cbPaqueterias.ValueMember = "paqueteria_id";


            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


       
       
    }
}
